/**
 * 封装axios请求模块
 */
import axios from 'axios'
import store from '@/store'
import router from '@/router'
import { Message } from "element-ui"
const envData = require("@/env/index.js");

// 创建一个axios实例
const request = axios.create({
    baseURL: envData.baseUrl,
    timeout: 5000,
})

// 请求拦截器（具体用法可看axios官网）
request.interceptors.request.use(function (config) {
    let tokens = localStorage.getItem('token');
    if (tokens) {
        config.header.Authorization = "Bearer " + tokens;
    }
    return config;
}, function (error) {
    // 对请求错误做些什么
    return Promise.reject(error)
})

// 响应拦截器
request.interceptors.response.use(function (response) {
    const data = response.data
    // 自定义属性custom为一个对象，可以包含catch参数获其他自定义参数，
    const custom = response.config?.custom
    if (data.status_code !== 200) {
        Message.error(data.message);
        // 如果需要catch返回，则进行reject
        if (custom?.catch) {
            return Promise.reject(data)
        } else {
            // 否则返回一个pending中的promise，请求不会进入catch中
            return new Promise(() => { })
        }
    }
    return data.data === undefined ? {} : data.data
}, function (error) {
    return Promise.reject(error)
})

export default request
